package com.petsdar.utils;

import redis.clients.jedis.Jedis;

/**
 * Created with IntelliJ IDEA
 * User: heroC
 * Date: 2020/7/1
 * Time: 12:41
 * Description: Jedis的方法封装工具
 * Version: V1.0
 */
public class JedisUtil {

    /**
     * 存储数据到redis中，并key过期时间为8个小时
     * @param key key值
     * @param value json数据
     * @param index 书库索引
     * @return 返回状态，true为成功设置，false为设置失败
     */
    public static boolean setexKey(String key, String value, int index){
        if (0 <= index && index<=15 && key != null){
            Jedis jedis = JedisPoolUtil.getJedis();
            jedis.select(index);
            String status = jedis.setex(key, 8*60*60, value);
            jedis.close();
            if (status.equals("OK")){
                return true;
            }
        }
        return false;
    }

    /**
     * 存储数据到redis中，并key长期有效
     * @param key key值
     * @param value json数据
     * @param index 数据库索引
     * @return
     */
    public static boolean setKey(String key, String value, int index){
        if (0 <= index && index<=15 && key != null){
            Jedis jedis = JedisPoolUtil.getJedis();
            jedis.select(index);
            String status = jedis.set(key, value);
            jedis.close();
            if (status.equals("OK")){
                return true;
            }
        }
        return false;
    }

    /**
     * 检查该key是否存在缓存中，如果存在则返回true，如果不存在则返回false
     * @param key key值
     * @param index 数据库索引
     * @return
     */
    public static boolean isKey(String key, int index){
        if (0 <= index && index<=15 && key != null){
            Jedis jedis = JedisPoolUtil.getJedis();
            jedis.select(index);
            jedis.close();
            return jedis.exists(key);
        }
        return false;
    }

    /**
     * 获取缓存中key值对应的value
     * @param key key值
     * @param index 数据库索引
     * @return
     */
    public static String getValue(String key, int index){
        if (0 <= index && index <= 15 && key != null){
            Jedis jedis = JedisPoolUtil.getJedis();
            jedis.select(index);
            String value = jedis.get(key);
            jedis.close();
            return value;
        }
        return null;
    }

    /**
     * 移除redis中的key值
     * @param key key值
     * @param index 数据库索引
     * @return
     */
    public static Boolean removeKey(String key, int index){
        return removeKey(index,key);
    }

    /**
     * 移除redis中的多个key值
     * @param index 数据库索引
     * @param keys 多个key值
     * @return
     */
    public static Boolean removeKey(int index, String... keys){
        if (0 <= index && index <= 15 && keys != null){
            Jedis jedis = JedisPoolUtil.getJedis();
            jedis.select(index);
            Long delCount = jedis.del(keys);
            if (delCount > 0){
                return true;
            }
        }
        return false;
    }
}
